package com.sz.common.core.system.service;

import com.sz.common.base.dto.ResultDto;
import com.sz.common.core.system.entity.OperationLog;

import java.util.Date;
import java.util.List;

/**
 * Function: OperationLoggerService <br>
 * Author: Charles <br>
 * Date: 2016-11-01 10:54:00
 */
public interface OperationLoggerService {
    /**
     * 添加操作日志.
     *
     * @param accountId   账户Id
     * @param domainId    域Id
     * @param moduleName  模块名称
     * @param subModule   子模块名称
     * @param action      action
     * @param operation   操作日志
     * @param dataBackup  备份数据
     * @param ip          IP地址
     * @param level       级别
     * @param description 描述
     */
    void addOperationLog(int accountId, int domainId, String moduleName, String subModule, String action,
                         String operation, String dataBackup,
                         String ip, int level, String description);

    /**
     * @param log
     */
    void addOperationLog(OperationLog log);

    /**
     * 查询日志
     *
     * @param accountId  --账户Id，可选
     * @param domainId   --域Id，可选
     * @param moduleName --模块名称，模糊查询，可选
     * @param subModule  --子模块名称，模糊查询，可选
     * @param action     --action,模糊查询，可选
     * @param keyword    --关键字，模糊查询，可选
     * @param userIP     --IP，模糊查询，可选
     * @param level      --level，可选
     * @param desc       --描述，模糊查询，可选
     * @param dateStart  --开始时间，可选
     * @param dateEnd    --结束时间，可选
     * @param pageIndex  --页码
     * @param pageSize   --页面大小
     * @return
     */
    ResultDto findByFilterListPage(int accountId, int domainId,
                                   String moduleName, String subModule, String action, String keyword, String userIP,
                                   int level, String desc, Date dateStart, Date dateEnd,
                                   int pageIndex, int pageSize);

    /**
     * 删除日志
     *
     * @param ids --日志ID
     */
    void deleteByIds(List<Long> ids);

    /**
     * 获取日志
     *
     * @param id --日志ID
     * @return 日志
     */
    OperationLog getOperationLog(Long id);
}
